package com.gdust.hzx.manager.controller;

import com.gdust.hzx.manager.service.SysRoleMenuService;
import com.gdust.spzx.common.log.annotation.Log;
import com.gdust.spzx.common.log.enums.OperatorType;
import com.gdust.hzx.model.dto.system.AssginMenuDto;
import com.gdust.hzx.model.vo.common.Result;
import com.gdust.hzx.model.vo.common.ResultCodeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * ClassName: SysRoleMenuController
 * Package: com.gdust.spzx.manager.controller
 * Description:用户选择对应的菜单以后，点击提交按钮，此时请求后端接口，后端将选中的菜单数据保存到sys_role_menu表中。
 *
 * @Author syun
 * @Create 2024/11/25 20:46
 * @Version 1.0
 */
@RestController// @RestController: 专用于restful风格的注解 = @Controller (控制器) + @ResponseBody (方法返回值为json)
@RequestMapping(value = "/admin/system/sysRoleMenu")
public class SysRoleMenuController {
    //注入角色菜单关系表的service
    @Autowired
    private SysRoleMenuService sysRoleMenuService;


    /**
     * 查询菜单
     *  //1.查询所有菜单和查询角色分配过菜单id列表
     *  思路：根据角色的id查询出其对应的菜单id，并且需要将系统中所有的菜单数据查询出来。
     * @param roleId 角色id
     * @return 响应结果实体类返回结果与业务状态码
     */
    @GetMapping("/findSysRoleMenuByRoleId/{roleId}")
    public Result findSysRoleMenuByRoleId(@PathVariable("roleId") Long roleId){
        //自定义方法查询所有菜单以及角色分配的菜单ID列表
        Map<String,Object> map = sysRoleMenuService.findSysRoleMenuByRoleId(roleId);
        return Result.build(map, ResultCodeEnum.SUCCESS);
    }



    /**
     *  保存角色分配菜单数据
     *  思路：后端需要先根据角色的id从sys_role_menu表中删除其所对应的菜单数据，然后添加新的菜单数据到sys_role_menu表中。
     *  也就是先删除后新增
     * @param assginMenuDto 请求参数实体类
     * @return 请求参数实体类返回结果与业务状态码
     */
    @Log(title = "保存角色分配菜单数据",businessType = 0,operatorType = OperatorType.MANAGE)
    @PostMapping("/doAssign")
    public Result doAssign(@RequestBody AssginMenuDto assginMenuDto){
        //自定义方法：保存角色分配菜单数据
        sysRoleMenuService.doAssign(assginMenuDto);
        return Result.build(null,ResultCodeEnum.SUCCESS);
    }


}
